home *** CD-ROM | disk | FTP | other *** search
/ The Arsenal Files 8 / The Arsenal Files Collection #8 (Arsenal Computer) (1996).ISO / g_quake / meddle16.zip / MDL.TXT < prev   
Text File  |  1996-09-30  |  24KB  |  623 lines

  1. -----------------------------------------------------------------------------
  2. MedDLe v1.6
  3. -----------------------------------------------------------------------------
  4.  
  5.     by brian martin
  6.     brian@phyast.pitt.edu
  7.     http://www.phyast.pitt.edu/~brian
  8.     --> also look at http://www.phyast.pitt.edu/~brian/meddle
  9.     for bug fixes and other info.
  10.  
  11.     Disclaimer: The author takes no responsiblity for misuse of
  12.     this program. He also is not responsible for any damage caused by it.
  13.     
  14.     This is free software. You can only redistribute it (like on a cdrom)
  15.     after you e-mail me and ask. If you don't e-mail me asking
  16.     permission, you better send me the cd-rom when it's done. Also, you
  17.     can NOT charge money for MedDLe.. it's free remember.
  18.  
  19.     Last note: If you want the source, mail me. I will give portions of
  20.     it out.
  21.  
  22.  
  23.  
  24. -----------------------------------------------------------------------------
  25. Quick Start:
  26. -----------------------------------------------------------------------------
  27.  
  28. edit mdl.cfg to fit your needs
  29. run mdl (i.e. "mdl player.mdl")
  30. hit key '1' for help
  31.  
  32. what's new??
  33.     change screen resolution while viewing (use +/- keys)
  34.     use other config files with -c command line option
  35.     fixed some bugs
  36.     get and set 2dmap in script (maybe not working right?)
  37.     reads/converts qtest models
  38.     writes obj files and  writes geo
  39.     
  40. -----------------------------------------------------------------------------
  41. Contents:
  42. -----------------------------------------------------------------------------
  43.  
  44.         1. About MedDLe
  45.         2. Installation
  46.         3. Basic Use
  47.         4. Editing MDL files (step by step)
  48.              4.a Textures
  49.              4.b Frames
  50.         5. Script Language
  51.         6. Notes about file types
  52.         7. History
  53.  
  54. -----------------------------------------------------------------------------
  55. 1. About
  56. -----------------------------------------------------------------------------
  57.  
  58. MedDLe is a program which lets you look at and edit the mdl
  59. files in quake. These are the files which describe the objects
  60. in quake and are located in the QUAKE\PROGS directory. You have to first
  61. unpack the id1.pak file with a program like unpack or qube. These can both
  62. be found at ftp.cdrom.com.
  63.  
  64. Features :
  65.         View bitmaps (object textures)
  66.         View/edit point mapping of the vertices
  67.         Export model textures to a BMP or GIF file
  68.         Import BMP or GIF files to give objects a new 'skin'
  69.         Export animation frames to wrl,asc,dxf,pov,map, and raw files
  70.         Import RAW files to make new animations
  71.         Small script language which will allow you to totally screw an mdl
  72.         3D View of object (vertex / wireframe / flatshaded / texture mapped views)
  73.         Animation frame browser
  74.         Played color changer
  75.         .more.
  76.  
  77. -----------------------------------------------------------------------------
  78. 2. Installation
  79. -----------------------------------------------------------------------------
  80.  
  81. You should stick MedDLe in its own directory. Just unzip it
  82. in a suitable directory (i.e. c:\mdl).  You should have these files
  83. in the MedDLe directory:
  84.  
  85.     MDL.EXE         -the executable
  86.     MDL.CFG         -the configuration file
  87.     MDL.FNT         -the fonts
  88.     MDL.PAL         -the palette
  89.     MDL.MAP         -the colormap
  90.     KEY.TXT         -quick reference sheet
  91.     MDLSRC.ZIP      -the source code (not with betas)
  92.     CWSDPMI.EXE     -dpmi environment (not needed if in windows)
  93.     EXAMPLE/        -directory with script example(s)
  94.  
  95. If everything is in place, bring up MDL.CFG in a text editor and set
  96. the path variable and video driver to match your system. You can set
  97. the video resolution here too. When your done, save the file. That's it!
  98.  
  99. note: You may need a 386/483sx and math co-procesor or a 486dx or higher
  100. to run this. I don't know. There are several math emulators on the net
  101. if it doesn't work on your numerically challenged machine.
  102.  
  103. -----------------------------------------------------------------------------
  104. 3. Basic Use
  105. -----------------------------------------------------------------------------
  106.  
  107. MedDLe has no GUI at this point. Live with it. :)
  108.  
  109. MedDLe can both be used to view and edit mdl files. To
  110. start the program just type 'mdl file.mdl' where 'file.mdl'
  111. is a valid mdl filename.
  112.  
  113. You start in 3D mode.
  114.  
  115.          ARROW up/down : move eye position up/down
  116.          ARROW left/right : previous/next animation frame
  117.  
  118.          Esc :        exit
  119.          + or - :    increase / decrease resolution
  120.          2 :            goto 2d mode
  121.          1 :            goto help (about)
  122.          t :            draw triangles
  123.          v :            draw vertices
  124.          s :            TAKE SCREEN SHOT (saved as pic#.bmp)
  125.          h :            show header
  126.          c :            auto cycle through animation frames
  127.          b :            change background color (black, gray, white)
  128.          r :             reset view
  129.          . or > :     next skin
  130.          , or < :        previous skin
  131.          " or ' :        next pants color
  132.          ; or : :        previous pants color
  133.          } or ] :     next shirt color
  134.          { or [ :        previous shirt color
  135.          Tab :        change rendering mode
  136.                     (flat shade, gourourd shade, texture, texture + shade)
  137.  
  138.          MOUSE up/down + right button : zoom in/out
  139.          MOUSE move + left button : rotate model
  140.          MOUSE move : move light source
  141.  
  142.  
  143. Just think of the mouse as your hand grabbing the object. It should
  144. then be easy to control. If you hit the '2' key, you will go to
  145. 2D mode. Here the keys are:
  146.  
  147.  
  148.          ARROW Keys:     move cursor
  149.  
  150.          Esc :        exit
  151.          + or - :    increase / decrease resolution
  152.          3 :            goto 3d mode
  153.          1 :            goto help (about)
  154.          t :            draw triangles
  155.          v :            draw vertices
  156.          s :            SAVE MDL FILE
  157.          p :
  158.          m :
  159.          . or > :     next skin
  160.          , or < :        previous skin
  161.          " or ' :        next pants color
  162.          ; or : :        previous pants color
  163.          } or ] :     next shirt color
  164.          { or [ :        previous shirt color
  165.  
  166.          MOUSE move : move cursor
  167.          MOUSE left button: grab hi-lighted vertex
  168.  
  169.  
  170. The mouse can be used to move vertices in this mode.
  171.  
  172. ** NEW **
  173. Command line options of importance.. Now meddle figures out if it's
  174. a skin or frame by the extension.
  175.  
  176.         import gif (or bmp) to skin number # in model.mdl
  177.         (if # is greater than model skins, skin is added)
  178.  
  179.             mdl -i pic.gif # model.mdl
  180.  
  181.  
  182.         export skin number # to gif (or bmp) from model.mdl
  183.         (if # is 0 or  negetive, a new blank skin with triangles is exported)
  184.  
  185.             mdl -e pic.gif # model.mdl
  186.  
  187.         import raw to frame number # in model.mdl
  188.  
  189.             mdl -i frame.raw # model.mdl
  190.  
  191.  
  192.         export frame number # to asc from model.mdl
  193.  
  194.             mdl -e frame.asc # model.mdl
  195.  
  196.         run a script file (must have a .med extension)
  197.  
  198.             mdl script.med
  199.  
  200.  
  201. !IMPORTANT!
  202. NOTE: When you use MedDLe, it will read the original mdl files from
  203. the path you set BUT will do all saving and reading from the
  204. current directory. If you load MedDLe in your quake/progs directory,
  205. you may end up erasing something you wish you hadn't. Of course you
  206. can change the read directory in the cfg file, but the save directory
  207. is always the current one.
  208. It may be a hassel, but you'll have to copy the saved mdl to the progs
  209. directory for quake to see the changes (duh).
  210.  
  211. -----------------------------------------------------------------------------
  212. 4. Editing MDL files
  213. -----------------------------------------------------------------------------
  214.  
  215. I have some info at http://www.phyast.pitt.edu/~brian/meddle but this
  216. ought to help you get started.
  217.  
  218. 4.a Textures
  219.  
  220.     The following explains the basic proceedure for adding a new skin to
  221.     the player model.
  222.  
  223.     In this example the 'player.mdl' file is modified with the texture
  224.     'play1.bmp'.
  225.  
  226.     1. First export the original texture. It will be saved in your
  227.     MedDLe directory.
  228.     'mdl -e play0.bmp 1 player.mdl'
  229.     NOTE: If you want to start from stratch (blank skin), use
  230.     'mdl -e play0.bmp 0 player.mdl'
  231.  
  232.     2. Now go off and modify the texture in your favorite paint
  233.     program. Make sure you save the new skin with 8-bit color
  234.     in GIF or BMP format. Save the modified texture as 'play1.bmp'
  235.     and place it in your MedDLe directory. The file mdl.pal (included)
  236.     can be loaded into programs like Paint Shop Pro so you can use the
  237.     correct palette, but MedDLe will try to match it up with the quake
  238.     palette if you don't. MedDLe also resizes the picture if necessary.
  239.  
  240.     3. Import the new texture (play1.bmp).
  241.     'mdl -i play1.bmp 2 player.mdl'
  242.     Since we said '2' it will add the skin in addition to the original
  243.     skin.
  244.  
  245.     4. Get into 2D mode (hit '2'). You can use the mouse to tweak some
  246.     of the vertices. You want to make sure that you don't change the
  247.     original layout too much, but also want to make sure there is no
  248.     background showing through any of the polygons. You should toggle back
  249.     and forth between 2D mode and 3D mode to check that the texture mapping
  250.     is ok. When your done tweaking, PRESS 's' IN 2D MODE to save your changes.
  251.  
  252.     Also, you can now change the shirt and pants color to see if you used
  253.     some colors you shouldn't have. Use the " [ ] ; ' " keys to do this.
  254.  
  255.     NOTE: If you don't press 's' in 2D mode your imported texture
  256.     will NOT be saved!
  257.  
  258.     5. Copy the new 'player.mdl' file to the quake/progs directory.
  259.     You may want to back up the original 'player.mdl' before doing this.
  260.  
  261.     6. Run QUAKE!
  262.  
  263.     Of course the player.mdl is you, so you won't see your changes... :)
  264.  
  265. ** NEW **
  266. 4.b Frames
  267.  
  268.     The following explains the basic proceedure for replacing animation
  269.     frames. In this example the 'player.mdl' file is modified with the
  270.     3d data file 'play1.raw'.
  271.  
  272.     1. First export the original frame. It will be saved in your
  273.     MedDLe directory.
  274.     'mdl -e play0.raw 1 player.mdl'
  275.     MedDLe will figure out the type of file it is by the extension. So
  276.     'mdl -e play0.asc 1 player.mdl'
  277.     will save it as a 3d studio asc file. Exportable file types are
  278.     pov (POVRay), dxf (cadd type), raw (raw points), asc (ascii),
  279.     map (quake map), wrl (vrml file) and 3ds (3dstudio file).
  280.     The wrl file is the most complete. If you export the skin and convert
  281.     it to a GIF file named 'skin.gif', the wrl file will be texture mapped.
  282.     The 3ds file isn't quite working perfect so use asc if you have 3d studio.
  283.     The raw file can be read by the 3d editor called Breeze Designer which
  284.     is a freeware program which allows vertex editing. I like
  285.     it and recommend it but it does seem to have some bugs if you use it
  286.     to create a model from scratch. The sides don't point out when you create
  287.     say a cube. I wrote the author about this. ClayWorks is another nice
  288.     program but I couldn't input any files to it. I haven't checked out
  289.     bCad much, but it seems to be really nice too. It exports to .asc and
  290.     imports it.. that's good. Also there is a truespace2 demo out there.
  291.     That program is the coolest yet (IMO). You can save the files to
  292.     an ascii format, but MedDLe doesn't read them. A converter to asc or
  293.     raw looks pretty easy, so I may make one up if enough people bother me.
  294.  
  295.     Remember, to see the frame number of the frames, hit 'h' while in 3d mode.
  296.     Use that number when extracting frames.
  297.  
  298.     2. Now go off and modify the frame data in your favorite program.
  299.     (like i said, Breeze Designer is nice) Save the modified frame as
  300.     'play1.raw' and place it in your MedDLe directory.
  301.  
  302.     One word about 3d editing. DON'T CHANGE THE NUMBER OF POINTS IN A FRAME
  303.     IF YOU PLAN ON IMPORTING TO AN EXISTING MDL FILE! JUST MOVE POINTS.
  304.     DON'T ADD OR DELETE POINTS! Making a model from scratch is a different
  305.     story. Read mdl script section below for that.
  306.  
  307.     3. Import the new frame (play1.raw).
  308.     'mdl -i play1.raw 1 player.mdl'
  309.  
  310.     4. Get into 2D mode (hit '2'). PRESS 's' IN 2D MODE to save your changes.
  311.  
  312.  
  313.     NOTE: If you don't press 's' in 2D mode your new frame won't be saved!
  314.  
  315.     5. Copy the new 'player.mdl' file to the quake/progs directory.
  316.     You may want to back up the original 'player.mdl' before doing this.
  317.  
  318.     6. Run QUAKE!
  319.  
  320.  
  321. Some added features that a serious editor will use are..
  322.  
  323.     - the file mdl.pal is used for quake. If you are editing a custom game,
  324.         you can replace mdl.pal with your own palette. The colormap can also
  325.         be changed (mdl.map).
  326.     - if you want to add a skin, just make sure the number is greater that
  327.         the current number of skins (same for frames)
  328.     - if you want to extract a blank skin is a number equal to or less
  329.         than zero.
  330.  
  331. -----------------------------------------------------------------------------
  332. 5. Scripting Language
  333. -----------------------------------------------------------------------------
  334.  
  335.     There is a small, but powerful scripting language. It is easy to
  336.     use and is the only way to really do serious work. Hopefully
  337.     there are some examples with this distribution.
  338.  
  339.     The script isn't high tech, so you must use proper syntax. That is,
  340.     you better have a space between words and suff.
  341.  
  342.     -Anything after a # is ignored.
  343.     -the progspath in the cfg file is NOT used.
  344.     -all script files must have extension .med
  345.     -type "mdl <name>.med" to run the script
  346.  
  347.     Here are th commands followed by a description. Things in <> are
  348.     necessary arguments:
  349.  
  350.     path <workingpath>
  351.  
  352.         this sets the working path <workingpath> for following file io.
  353.         you should end the path with a slash or back-slash (like oj).
  354.  
  355.     load_mdl <name>
  356.  
  357.         this will load <name> into MedDLe. You need to load a file
  358.         before you can change things.
  359.  
  360.     save_mdl <name>
  361.  
  362.         this saves the current (modified) mdl file to <name>
  363.  
  364.     new_mdl <frame.name>
  365.  
  366.         this creates a brand spanking new mdl file. You must supply
  367.         a base frame. A blank skin will be created. Note that the base
  368.         frame usually is not ever going to be used for the model, but
  369.         serves as a template for all of the other frames. The frame is
  370.         stored in the first frame slot.
  371.  
  372.     get_info <name>
  373.  
  374.         this outputs some of the model info to a file <name>.
  375.  
  376.     decompose <medfile> <skin extension> <frame extension>
  377.  
  378.         this extracts all skins and frames from a model. you must specify
  379.         the file extensions for the extracted data (i.e. gif or bmp for
  380.         <skin extension>). You must also give a med file name which will
  381.         be created to help put things back together. To use the created
  382.         file, make sure to un-comment out the 'save' line at the end of
  383.         the file.
  384.  
  385.                 get_2dmap <filename>
  386.  
  387.         this outputs the 2d texture coordinate mapping to a text file
  388.         it can be used to help reconstruct models if you have no base
  389.         frame and want to use a quake one.
  390.  
  391.     2dmap <filename>
  392.  
  393.         sets the 2d point mapping according to the 2dmap file given
  394.  
  395.     add <filename>
  396.  
  397.         adds <filename> to the current loaded model
  398.  
  399.     insert <filename> <index>
  400.  
  401.         inserts <filename> to the current loaded model in position <index>
  402.  
  403.     extract <filename> <index>
  404.  
  405.         extracts frame or skin number <index> to <filename>
  406.  
  407.     set <data_type> <value>
  408.  
  409.         sets certain header values in the model. the valid data types are:
  410.         (these are floating point values)
  411.             xscale, yscale, zscale, xoffset, yoffset, zoffset
  412.             eyex, eyey, eyez
  413.             average_size, radius
  414.         (these are unsigned integer values)
  415.             version, num_skins, num_frames, num_vertices,
  416.             skin_width, skin_height, sync_type, flags
  417.         if you don't know what your doing you can really screw things up here.
  418.         this only sets the value, it doesn't modify the data, so changing the
  419.         skin width will most likely just crash quake (and meddle) when you
  420.         try loading a file.
  421.  
  422.     frame_name <index> <new name>
  423.  
  424.         this changes the frame <index>'s name to <new name>. Remember that
  425.         with MedDLe all indices start at 1 (not 0).
  426.  
  427.     (I know I need to add a delete feature as well)
  428.     Here are some examples:
  429.  
  430.     example 1:
  431.  
  432.          path c:\quake\progs\    #set path to progs directory
  433.          load_mdl armor.mdl      #load armor model into memory
  434.          path c:\mdl\script\     #set path to script directory
  435.          decompose armor.med gif raw  #extract all of model into script dir
  436.                                                          #save skins in gif format and frames in raw format
  437.                                                          #create a file armor.med which will put the model
  438.                                                          #back together
  439.     example 2:
  440.          path c:\quake\progs\    #set path to progs directory
  441.          load_mdl player.mdl     #load player model into memory
  442.          path c:\pictures\       #set path to pictures directory
  443.          add newskin.bmp         #adds a new skin
  444.          set zscale .1           #squash the model (why? who knows..)
  445.          path c:\quake\progs\    #set path to progs directory
  446.          save_mdl player2.mdl    #save changes to player2.mdl in progs dir
  447.  
  448.     example 3:
  449.          path c:\quake\progs\    #set path to progs directory
  450.          load_mdl player.mdl     #load player model into memory
  451.          path c:\mdl\            #set path to mdl
  452.          extract frame1.raw 71   #extract frame 71 to frame1.raw in mdl dir
  453.          new_mdl frame1.raw      #generate a new model
  454.          extract skin1.gif 1     #get the blank skin (so we can modify it)
  455.          save_mdl newplay.mdl    #save the new model
  456.  
  457.     Hope this helps out.
  458.     I should mention that ripping appart existing mdl files with decompose
  459.     and rebuilding them will not produce the original models. Why? you ask.
  460.     Well as I mentioned earlier, a base frame is used to generate the
  461.     texture and mapping. If you just use the first frame of the model,
  462.     you may get crappy results. For instance, the ogre.mdl has a chain
  463.     saw which won't generate a nice mdl. So what do you do? I think this
  464.     is what id did: You create your objects (ogre and chainsaw) separately
  465.     and then place them in the model file such that they are facing in
  466.     the x direction and are fairly symmetric about the y axis. (z points up).
  467.     Then generate a model with that frame. You can then move the chain saw to
  468.     the hand of the ogre in the other frames. So the script may look like:
  469.  
  470.         new_mdl base.raw
  471.         insert frame1.raw
  472.  
  473.     instead of just:
  474.  
  475.         new_mdl frame2.raw
  476.  
  477.     Now you may still have some problem getting the texture map to show
  478.     all sides of the chainsaw (or any square object for that matter). In
  479.     this case you should rotate the object around it's y axis 45 degrees
  480.     in the base frame. This will expose the sides of object better in
  481.     some cases. Because of all these little tricks, you can't just
  482.     expect to make the player.mdl from decompose. (you'll have to move
  483.     things so that the gun, axe, and fire flash generate a nice base skin).
  484.  
  485.     If you make a model from scratch, you should keep in mind that
  486.     your probably using a PC, not a CRAY. KISS. Keep It Simple Stupid.
  487.     Between 1 and 500 triangles is good. Also remember that the models
  488.     only have a resolution of 255x255x255 in discrete units, but are scaled.
  489.     The typical height of a model (in your editors coordinates) is
  490.     about 70. and monsters like the ogre is over 100. Models face in the
  491.     x direction, z is up, and y to the models left. They should be centered
  492.     about the origin, but this can be changed later using the 'set'
  493.     command. Also try to keep all the frame sizes about the same. You'll
  494.     find out that if you make the base frame too different, things will
  495.     be screwed.
  496.     Is that good enough for now?
  497.  
  498.     One last note. Because MedDLe wasn't written with speed in mind
  499.     when it comes to import/extract, things get slower and slower the
  500.     more frames you add. It should't crash though.
  501.                 I take that back. Another note: you may want to pipe the out put
  502.                 from the script to a file : "mdl script.med > out.txt"
  503.  
  504. -----------------------------------------------------------------------------
  505. 6. Notes about file types
  506. -----------------------------------------------------------------------------
  507.  
  508.     Since there is a lot of file importing and exporting going on,
  509.     I decided to say say a little about each file type.
  510.  
  511.     For the pictures, there is not much to say except to keep
  512.     the colors to 8-bit (256 color). GIF and BMP are supported
  513.     and are color matched and resized when imported.
  514.  
  515.     Now the 3d files. Since it seems like every editor interperates
  516.     the 3d coordinates differently...
  517.  
  518.                 RAW: this file is just ascii numbers. the first 3 are the x,y,z
  519.                 coordinates of the first vertex in the first triangle. The next 3
  520.                 are the second vertex of the first triangle. The third set of 3
  521.                 are the last vertex. The vertices are arranged such that the
  522.                 surface normal points out (counter clockwise). (or maybe it points
  523.                 in, can't remember.. just don't change the order). You can use a text
  524.                 editor to create models with this format.
  525.  
  526.                 ASC: this is a text format saved by 3d Studio. The coordinate
  527.                 system in 3d studio is a bit different from quake. In quake,
  528.                 z points up, in 3ds it points towards you. I fixed MedDLe such that
  529.                 if you export an asc file, 3d Studio will display it properly,
  530.                 but the coordinates are different. (so to convert an exported RAW
  531.                 to an ASC and then import may screw things). By properly, I mean
  532.                 the 'front' view is the front, the 'left' is the left, etc...
  533.                 Importing an asc file works the same. The front remains the front,
  534.                 but the x y z values are changed around behind your back. You can
  535.                 also create this file by hand. I just want to warn you that here the
  536.                 vertices are stored in opposite order from the raw file.
  537.  
  538.                 Those two formats allow import/export of frames and model generation.
  539.                 The other formats are just export for now. I haven't had a chance to
  540.                 really test them, but the WRL works nicely. Again I had to change
  541.                 the coordinate system to get things to look ok, but don't worry
  542.                 about it for now. The export of the quake MAP format is a little
  543.                 different. This is because it exports the model in the raw byte
  544.                 format, that is, each x,y,z value ranges from 0 to 255. I did this
  545.                 because I didn't see a quake map editor taking any negative values.
  546.                 When a really good map editor is out, I'll fix the import function
  547.                 for this. The other file types are DXF and POV. Which I haven't
  548.                 had a chance to test.
  549.  
  550. -----------------------------------------------------------------------------
  551. 7. History
  552. -----------------------------------------------------------------------------
  553. v1.6
  554.     -fixed small bugs
  555.     -multiple config files
  556.     -change resolution on the fly
  557.     -maybe last dos version?....
  558. v1.5
  559.     -3d export added and some import
  560.     -script language
  561.     -gif support
  562. v1.4
  563.     -fixed import/export- now its rocks
  564.     -shirt/pants color changing
  565.     -multi skins handled better
  566.     -saving enabled
  567.     -some new key mappings
  568. v1.3
  569.     -includes source with public release
  570.     -gouraud shading with colormap
  571.     -new file format support
  572.     -help screens
  573.     -more comments in source and some cleaning
  574. v1.2
  575.     -released with source
  576.     -better mouse control
  577. v1.1
  578.     -not released-gui experiments
  579.     -gouraud shading
  580. v1.0
  581.     -now you can edit the 2d vertices
  582.     -fixed bugs which caused crashes in 3d mode
  583.     -expanded video support via GRX20
  584.     -added flat shading to 3d models and texture mapping
  585.     -you can now cycle through the frames of animation
  586.     -several other little things
  587. v0.1
  588.     -added wire frame 3d view
  589.     -added importing/exporting BMP files
  590. v0.00002
  591.     - same as v0.00001 but with correct palette
  592. v0.00001 (not released, except on IRC)
  593.     - displayed the skin texture
  594.  
  595. Wish list..
  596.  
  597.     -stick man... you'll see
  598.     -gui
  599.     -more time
  600.  
  601. ------------------------------------------------------------------------------
  602.  
  603. Programmers Note: in this version GRX20 was used along with 3DGPL.
  604. I sorta merged the two together and stuck some of my own stuff in there.
  605. The program is not optimized at all, and a sharp eye will notice that
  606. there is no _perspective_ texture mapping. Oh well, maybe I'll get around
  607. to that in a later version. Or maybe not.
  608.  
  609. Special thanks goes out to...
  610.  
  611. Gershon Elber for the source to gif-lib (which I completely trashed)
  612. John Carmack for release of utility source
  613. Chris Babcock for making me aware of the frame data
  614. Raphael Quinet and Sean Werkema for giving out their source which
  615.     made learning to read BMP files easy (also the source taught me a few tricks)
  616. Sergei Savchenko for 3DGPL. I learned a lot of 3D programming from that and
  617.     use several modified versions of his routines for clipping and texture mapping.
  618. DJGPP v2 and the excellent GRX20 graphics lib.
  619. Id for quake.
  620. Becky for putting up with me :)
  621.  
  622. -end document------------------------------------------------------------------
  623.